/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Engine.Fisica;

import java.awt.Component;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.net.URL;
import java.util.ArrayList;
import jogopoo.Grafico.GrafCenario;

/**
 *Esta classe desenha o backghound
 * e trata os recortes do background quando para dar
 * o efeito de buraco nos planetas
 * @author user
 */
public final class Clip {
/**
 *
 * @param GrafCenario cenario
 */
    public Clip(GrafCenario cena) {
        sprite = new Image[1]; //background
        this.cena = cena;
        numeroBackground = cena.getBackgroundNumero();

    }
/**
 * Metodo estatico que carrega a imagem do backgound antes que q ele desenhe
 * @param Component component
 * @throws InterruptedException
 */
    public static void carregarImagens(Component component) throws InterruptedException {
        sprite = new Image[1];
        MediaTracker mediaTracker = new MediaTracker(component);


        URL url = Clip.class.getResource("/imagens/background" + numeroBackground + ".jpg");
        sprite[0] = Toolkit.getDefaultToolkit().getImage(url);
        mediaTracker.addImage(sprite[0], 0);


        mediaTracker.waitForAll();
    }
/**
 * Metodo que Desenha fundo de tela
 * @param g2
 */
    public void desenhaBackground(Graphics2D g2) {
        g2.drawImage(Clip.sprite[0], 0, 0, cena);
    }
/**
 * Desenha os recortes do background de acordo com as ellipeses que representao
 * os buracos
 * @param g2
 * @param lista_planeta
 */
    public void desenha(Graphics2D g2, ArrayList<Planeta> lista_planeta) {

        for (int i = 0; i < lista_planeta.size(); ++i) {
            for (int j = 0; j < lista_planeta.get(i).getListaElipses().size(); ++j) {
                g2.setClip(lista_planeta.get(i).getListaElipses().get(j));
                g2.drawImage(Clip.sprite[0], 0, 0, cena);
            }
        }
        g2.setClip(null);
    }
    private GrafCenario cena;
    private static Image[] sprite;//background
    private static String numeroBackground;
}
